package com.sqm.entity;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.apache.poi.ss.formula.functions.T;

/**
 * 功能: 返回规范化
 * 作者: 沙琪马
 * 日期: 2024/4/8 19:46
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class Result<T> {
    public static final String CODE_SUCCESS = "200";
    public static final String CODE_AUTH_ERROR = "401";
    public static final String CODE_SYS_ERROR = "500";

    /**
     * 请求的返回编码
     * 编码表示这次请求成功还是失败
     * 或者说  可以看出失败的类型是什么
     */
    private String code;
    /**
     * msg表示错误的详细信息
     */
    private String msg;
    /**
     * 数据从什么地方返回出去?
     * 就是这个data
     * user Object类型就是user
     * List Object类型就是List
     * Map Object类型就是Map
     */
    private T data;

    public static <T> Result<T> success(){
        return new Result<T>(CODE_SUCCESS, "请求成功", null);
    }

    public static <T> Result<T> success(T data){
        return new Result<T>(CODE_SUCCESS, "请求成功", data);
    }

    public static <T> Result<T> error(String msg){
        return new Result<T>(CODE_SYS_ERROR, msg, null);
    }

    public static <T> Result<T> error(String code,String msg){
        return new Result<T>( code, msg, null);
    }

    public static <T> Result<T> error(){
        return new Result<T>(CODE_SYS_ERROR, "系统错误", null);
    }

}
